home *** CD-ROM | disk | FTP | other *** search
/ Adobe Digital Video Collection / Digital Video Collection CD.iso / After Effects 5.5 / MMScriptFre.Cab / F115597_gravity.mm < prev    next >
Encoding:
Text File  |  2001-12-07  |  1.5 KB  |  45 lines

  1. // GravitΘ - Version 1.3
  2.  
  3. // Ce script applique une force gravitationnelle au calque 1.
  4. // La vitesse du calque au dΘbut de la zone de travail
  5. // est prise comme vitesse initiale.
  6.  
  7. //      CALQUE                                 PROPRIETE                  DIMENSION
  8. //      -------                                 ----------                  ---------- 
  9. // 1: Calque α modifier                   indiffΘrent                   indiffΘrent
  10. // 2: indiffΘrent                             indiffΘrent                   indiffΘrent
  11.  
  12. if (time() == start_time) {
  13.     vel = tmap (time() + step_time, value(pop_layer(1), position)) -
  14.            value(pop_layer(1), position);
  15.     damping = 0.95;                    //Frottements (0 = infinis, 1 = nuls)
  16.     grav = 0.9;                        // Amplitude de la force de gravitΘ
  17.     grav_dir = {0,1,0};                // Direction de la gravitΘ
  18.     accel = grav * grav_dir;        // Vecteur gravitΘ
  19.  
  20.     new_pos = value(pop_layer(1), position);
  21. } else {
  22.  
  23.     vel = vel*damping + accel;                        // Ajout d'une accΘlΘration discrΦte α la vitesse
  24.     new_pos = new_pos + vel;                 // Ajout d'une vitesse discrΦte α la position
  25.     
  26.     // Test de collision avec les bords de la composition et rebond Θventuel
  27.     if (new_pos[X] < 0) {
  28.         new_pos[X] = 0;
  29.         vel = {-vel[X], vel[Y]};
  30.     }
  31.     if (new_pos[Y] < 0) {
  32.         new_pos[Y] = 0;
  33.         vel = {vel[X], -vel[Y]};
  34.     }
  35.     if (new_pos[X] > comp_size[X]) {
  36.         new_pos[X] = comp_size[X];
  37.         vel = {-vel[X], vel[Y]};
  38.     }
  39.     if (new_pos[Y] > comp_size[Y]) {
  40.         new_pos[Y] = comp_size[Y];
  41.         vel = {vel[X], -vel[Y]};
  42.     }    
  43. }
  44. value(pop_layer(1), position) = new_pos;
  45.